package com.zggk.framework.utils.assets;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import com.alibaba.druid.pool.vendor.SybaseExceptionSorter;

public class ImportNumberStringUtils {
	
	/**
	 * 
	 * @Description 
	 * @author 尹强[yinqiang] Email:changetogther@163.com Tel:18181725967
	 * @param
	 * @return
	 * @createDate 2018年5月18日 下午5:44:17
	 * @update:[日期YYYY-MM-DD][更改人姓名][变更描述]
	 */
   public static String toString(Object obj) {    
       return obj == null || "NULL".equals(obj) || "".equals(obj)? "" : obj.toString();    
   } 
	
   /**
    * 
    * @Description 
    * @author 尹强[yinqiang] Email:changetogther@163.com Tel:18181725967
    * @param
    * @return
    * @createDate 2018年5月18日 下午5:53:15
    * @update:[日期YYYY-MM-DD][更改人姓名][变更描述]
    */
     public static Integer toInteger(Object obj) {    
         return obj == null || "NULL".equals(obj)||"".equals(obj)?  0: Double.valueOf(obj.toString()).intValue();    
     }  
     
     /**
      * 
      * @Description 判断字符串中是否有中文
      * @author 尹强[yinqiang] Email:2259441906@qq.com Tel:18181725967
      * @throws
      * @throws 
      * @createDate 2018年9月20日 上午11:10:36
      */
     public static final boolean isChineseStr(String strName) {  
         char[] ch = strName.toCharArray();  
         for (int i = 0; i < ch.length; i++) {  
             char c = ch[i];  
             if (isChinese(c)) {  
                 return true;  
             }  
         }  
         return false;  
     }  

     private static final boolean isChinese(char c) {  
         Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);  
         if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS  
                 || ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS  
                 || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A  
                 || ub == Character.UnicodeBlock.GENERAL_PUNCTUATION  
                 || ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION  
                 || ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS) {  
             return true;  
         }  
         return false;  
     }  
   
     
  
    /**
     * 
     * @Description 
     * @author 尹强[yinqiang] Email:changetogther@163.com Tel:18181725967
     * @param
     * @return
     * @createDate 2018年5月18日 下午5:53:20
     * @update:[日期YYYY-MM-DD][更改人姓名][变更描述]
     */
       public static Double toDouble(Object obj) {    
           return obj == null ||"".equals(obj) || "NULL".equals(obj) ?  0d: Double.parseDouble(obj.toString());    
       } 
       
       /**
        * 
        * @Description 判断字符串中无汉字
        * @author 尹强[yinqiang] Email:2259441906@qq.com Tel:18181725967
        * @param
        * @return
        * @createDate 2018年6月1日 下午4:53:02
        * @update:[日期YYYY-MM-DD][更改人姓名][变更描述]
        */
       public static boolean checkIfExistChineseCharacter(String s) {
    	           return (s.length() == s.getBytes().length);
       }
       
       /**
        * 
        * @Description 判断字符串只为数字和字母
        * @author 尹强[yinqiang] Email:2259441906@qq.com Tel:18181725967
        * @throws
        * @throws 
        * @createDate 2018年8月2日 下午2:40:57
        */
       public static boolean validateEnNumber(String str) {
    	   Pattern pattern = Pattern.compile("^[A-Za-z0-9\\-]+$");
           Matcher isEnNum = pattern.matcher(str);
           if(!isEnNum.matches()) {
        	   return  false;
           }
           return true;
       }
       /**
        * 
        * @Description 判断一个字符串包含数字
        * @author 尹强[yinqiang] Email:2259441906@qq.com Tel:18181725967
        * @throws
        * @throws 
        * @createDate 2018年9月19日 下午2:30:45
        */
       public static boolean isContainNumber(String str) {

           Pattern p = Pattern.compile("[0-9]");
           Matcher m = p.matcher(str);
           if (m.find()) {
               return true;
           }
           return false;
       }
       
       /**
        * 
        * @Description 判断字符串是否为整数
        * @author 尹强[yinqiang] Email:2259441906@qq.com Tel:18181725967
        * @param
        * @return
        * @createDate 2018年6月2日 上午10:42:09
        * @update:[日期YYYY-MM-DD][更改人姓名][变更描述]
        */
       public static boolean isNumericzidai(String str) {
           Pattern pattern = Pattern.compile("-?[0-9]+.?[0-9]+");
           Matcher isNum = pattern.matcher(str);
           if (!isNum.matches()) {
               return false;
           }
           return true;
       }
       
       /**
        * 
        * @Description 判断字符串是否为数字
        * @author 尹强[yinqiang] Email:2259441906@qq.com Tel:18181725967
        * @throws
        * @throws 
        * @createDate 2018年9月14日 下午5:54:14
        */
       public final static boolean isNumeric(String s) {
    	    if (s != null && !"".equals(s.trim()))
    	        return s.matches("([1-9]\\d*\\.?\\d*)|(0\\.\\d*[1-9])");
    	    else
    	        return false;
    	} 
     
       /**
   	 * scale：除不尽保留位数
   	 * @Description 除法保留后几位
   	 * @author 尹强[yinqiang] Email:2259441906@qq.com Tel:18181725967
   	 * @throws
   	 * @throws 
   	 * @createDate 2018年7月2日 下午1:56:38
   	 */
   	public static double div(double v1, double v2, int scale) {  
           if (scale < 0) {  
               throw new IllegalArgumentException(  
                       "The scale must be a positive integer or zero");  
           }  
           BigDecimal b1 = new BigDecimal(Double.toString(v1));  
           BigDecimal b2 = new BigDecimal(Double.toString(v2));  
           return b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue();  
       }  
   	
	public static double div(BigDecimal v1, BigDecimal v2, int scale) {  
        if (scale < 0) {  
            throw new IllegalArgumentException(  
                    "The scale must be a positive integer or zero");  
        }  
       
        return v1.divide(v2, scale, BigDecimal.ROUND_HALF_UP).doubleValue();  
    }  
	
	/**
	 * 
	 * @Description 保留两位小数
	 * @author 尹强[yinqiang] Email:2259441906@qq.com Tel:18181725967
	 * @throws
	 * @throws 
	 * @createDate 2018年8月3日 下午3:08:33
	 */
	public static String numTwoFormat(double value) {  		  
        BigDecimal bd = new BigDecimal(value);  
        bd = bd.setScale(2, RoundingMode.HALF_UP);  
        return bd.toString();  
    }  
	//保留两位小数方法重载
	public static String numTwoFormat(BigDecimal value) {  		      
		value = value.setScale(2, RoundingMode.HALF_UP);  
        return value.toString();  
    }  
	
	/**
	 * 
	 * @Description 判断字符串有无特殊字符
	 * @author 尹强[yinqiang] Email:2259441906@qq.com Tel:18181725967
	 * @param
	 * @return
	 * @createDate 2018年11月13日下午1:35:59
	 * @update:2018年11月13日下午1:35:59
	 */
	public static boolean stringFilter(String str) {
		String regex = "[^0-9a-zA-Z\u4e00-\u9fa5.，,。？“”]+";
		Pattern p = Pattern.compile(regex);
		Matcher matcher = p.matcher(str); 
		return matcher.find(); 
	}
	/**
	 * 
	 * @Description 去除特殊字符后的字符串
	 * @author 尹强[yinqiang] Email:2259441906@qq.com Tel:18181725967
	 * @param
	 * @return
	 * @createDate 2018年11月13日下午1:59:42
	 * @update:2018年11月13日下午1:59:42
	 */
	public static String replaceSpecialStr(String str) {
		String regex = "[^0-9a-zA-Z\\u4e00-\\u9fa5.，,。？“”]+";
		return str.replaceAll(regex,"");
	}
	
	//保留两位小数方法重载
	public static String numTwoFormatIfNotNull(BigDecimal value) {  	
		if(null == value) {
			return "";
		}
		value = value.setScale(2, RoundingMode.HALF_UP);  
        return value.toString();  
    }  
}
